# Define packages
packages = c("dplyr","tidyr",                                  # data manipulation
             "rgdal","maptools",                               # shapefiles
             "leaflet","leaflet.extras","leaflet.minicharts",  # maps
             "RColorBrewer",                                   # colors palettes
             "plyr",                                           # easy merge
             "stringr")                                        # strings manipulation
                                                     
# Attach packages
invisible(suppressMessages(lapply(packages, library, character.only = T)))

# Define working directory
csv_cd = "C:/Users/lgoye/OneDrive/documents/GitHub/hw02_lgoyenec/data_csv"
shp_cd = "C:/Users/lgoye/OneDrive/documents/GitHub/hw02_lgoyenec/data_shp"

# Import data
crimes = read.csv(paste0(csv_cd, "/crimes_2018.csv"))
police = read.csv(paste0(csv_cd, "/police_stations.csv"))
  
# Import shapefiles
sh_bound = readOGR(dsn = shp_cd, 
                   layer = "police_beats", 
                   verbose = F)
sh_bikes = readOGR(dsn = shp_cd, 
                   layer = "bike_routes", 
                   verbose = F)
# All variables in lower case
names(crimes) = tolower(names(crimes))
names(police) = tolower(names(police))

# Choosing variables of interest
crimes = 
  crimes %>% 
  select(date, 
         primary.type, 
         location.description, 
         arrest, domestic, 
         beat, district, ward, community.area, 
         x.coordinate, y.coordinate, latitude, longitude) 

police = 
  police %>%
  select(`ï..district`, district.name, 
         wards,
         x.coordinate, y.coordinate, latitude, longitude) %>%
  dplyr::rename(ward = wards) %>%
  
  # Changes on district variable for polylines map
  dplyr::rename(district = `ï..district`) %>%
  mutate(district = as.numeric(ifelse(district == "Headquarters", 0, district)))

# Construct final data based on interest of analysis:: 
  # Select Primary Type of interest and create categorical variable:
      # Homicide
      # Human Trafficking 
      # Kidnapping
      # Narcotics

data = 
  crimes %>%
  filter(
    primary.type %in% 
      c("HOMICIDE", 
      "HUMAN TRAFFICKING", 
      "KIDNAPPING", 
      "PROSTITUTION")
  ) %>%
  mutate(
    crime_type =
      ifelse(primary.type == "HOMICIDE", 1, 
      ifelse(primary.type == "HUMAN TRAFFICKING", 2,
      ifelse(primary.type == "KIDNAPPING", 3, 4)))
  )

Maps

Map 1:

Distribution of total crimes in 2018 across police beats

Map 2

Distribution of homicides, human traffickig, Kidnapping and Prostitution in 2018 across Chicago

Map 3

Distance between police stations and kidnapping crimes